package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.FAVIN;

public class FAVINDAO {
	
	public List<FAVIN> listar() throws SQLException{
		List<FAVIN> listado = new ArrayList<FAVIN>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,fabrica,busqueda,busqueda_2,situacion " +
				"FROM tbl_favin");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			FAVIN vin = new FAVIN();
			vin.setId(rs.getInt("id"));
			vin.setFabrica(rs.getString("fabrica"));
			vin.setBusqueda(rs.getString("busqueda"));
			vin.setBusqueda2(rs.getString("busqueda_2"));
			vin.setSituacion(rs.getString("situacion"))	;		
			listado.add(vin);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<FAVIN> buscarPorFabricante(String filtro,String situacion) throws SQLException{
		List<FAVIN> listado = new ArrayList<FAVIN>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,fabrica,busqueda,busqueda_2,situacion " +
				"FROM tbl_favin WHERE situacion in ("+situacion+") and fabrica like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			FAVIN vin = new FAVIN();
			vin.setId(rs.getInt("id"));
			vin.setFabrica(rs.getString("fabrica"));
			vin.setBusqueda(rs.getString("busqueda"));
			vin.setBusqueda2(rs.getString("busqueda_2"));
			vin.setSituacion(rs.getString("situacion"));
			listado.add(vin);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<FAVIN> buscarPorAlias(String filtro,String situacion) throws SQLException{
		List<FAVIN> listado = new ArrayList<FAVIN>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,fabrica,busqueda,busqueda_2,situacion " +
				"FROM tbl_favin WHERE situacion in ("+situacion+") and busqueda_2 like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			FAVIN vin = new FAVIN();
			vin.setId(rs.getInt("id"));
			vin.setFabrica(rs.getString("fabrica"));
			vin.setBusqueda(rs.getString("busqueda"));
			vin.setBusqueda2(rs.getString("busqueda_2"));
			vin.setSituacion(rs.getString("situacion"));
			listado.add(vin);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<FAVIN> buscarPorVIN(String filtro,String situacion) throws SQLException{
		List<FAVIN> listado = new ArrayList<FAVIN>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,fabrica,busqueda,busqueda_2,situacion " +
				"FROM tbl_favin WHERE situacion in ("+situacion+") and busqueda like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			FAVIN vin = new FAVIN();
			vin.setId(rs.getInt("id"));
			vin.setFabrica(rs.getString("fabrica"));
			vin.setBusqueda(rs.getString("busqueda"));
			vin.setBusqueda2(rs.getString("busqueda_2"));
			vin.setSituacion(rs.getString("situacion"));
			listado.add(vin);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public FAVIN buscarVin(FAVIN vin) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,fabrica,busqueda,busqueda_2,situacion " +
						"FROM tbl_favin WHERE fabrica = ? AND busqueda_2 = ?");
		pstm.setString(1, vin.getFabrica());
		pstm.setString(2, vin.getBusqueda2());	
		ResultSet rs = pstm.executeQuery();
		FAVIN vin1 = null;
		while (rs.next()) {
			vin1 = new FAVIN();
			vin1.setFabrica(rs.getString("busqueda_2"));
			vin1.setId(rs.getInt("id"));
		}
		rs.close();
		pstm.close();
		return vin1;	
	}

	
	public int insertar(FAVIN vin) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"insert into tbl_favin (fabrica,busqueda,busqueda_2,situacion,usuario_creacion,fecha_creacion) values (?,?,?,?,?,?)");
		pstm.setString(1, vin.getFabrica());
		pstm.setString(2, vin.getBusqueda());
		pstm.setString(3, vin.getBusqueda2());
		pstm.setString(4, vin.getSituacion());
		pstm.setString(5, vin.getUsuario_creacion());
		pstm.setInt(6, vin.getFecha_creacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(FAVIN vin) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"update tbl_favin set fabrica = ?,busqueda = ?,busqueda_2 = ?,situacion = ?,usuario_modificacion = ?,fecha_modificacion = ? where id = ?");
		pstm.setString(1, vin.getFabrica());
		pstm.setString(2, vin.getBusqueda());
		pstm.setString(3, vin.getBusqueda2());
		pstm.setString(4, vin.getSituacion());
		pstm.setString(5, vin.getUsuario_modificacion());
		pstm.setInt(6, vin.getFecha_modificacion());
		pstm.setInt(7, vin.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}	
}
